// pages/my/myOrder/myOrder.js
import request from "../../../utils/request"

// 转换后端订单数据为前端格式
const formatBackendOrders = (backendOrders) => {
  return backendOrders.map(order => {
    // 处理订单状态映射
    let status, statusText;
    switch (order.orderStatus) {
      case 0:
        status = 'daizhifu';
        statusText = '待支付';
        break;
      case 1:
        status = 'daifuwu';
        statusText = '待执行';
        break;
      case 2:
        status = 'yizhixing';
        statusText = '已执行';
        break;
      case 3:
        status = 'yiwancheng';
        statusText = '已完成';
        break;
      case 4:
        status = 'yituikuan';
        statusText = '已退款';
        break;
      case 5:
        status = 'yiguanbi';
        statusText = '已关闭';
        break;
      default:
        status = 'unknown';
        statusText = '未知状态';
    }

    return {
      id: order.orderNo, // 用订单编号作为id
      status: status,
      statusText: statusText,
      serviceName: order.nursingItem?.name || '未知服务', // 兼容nursingItem为空的情况
      customer: order.elderly?.name || '未知客户', // 兼容elderly为空的情况
      time: order.expectedServiceTime || order.createTime, // 优先用预计服务时间，无则用创建时间
      price: order.orderAmount.toFixed(2), // 价格保留两位小数
      image: '/images/pic-xt@2x.png' // 固定默认图片
    };
  });
};
Page({
  data: {
    active: 0, // 默认选中“全部”
    // 1. 所有订单原始数据（不变）
    allOrders: [],
    // 2. 为每个Tab创建独立数据源（页面加载时筛选好）
    allTabOrders: [],      // 全部Tab数据
    daizhifuTabOrders: [], // 待支付Tab数据
    daifuwuTabOrders: [],  // 待执行Tab数据
    yizhixingTabOrders: [],// 已执行Tab数据
    yiwanchengTabOrders: [],// 已完成Tab数据

    //查询条件
    orderUserId:'',
  },


  // 取消订单的实现
  // 取消订单 - 跳转到选择取消原因页面
cancelOrder(e) {
  const orderNo = e.currentTarget.dataset.id;
  // 跳转到选择取消原因页面
  wx.navigateTo({
    url: `/pages/service/cancelReason/cancelReason?orderNo=${orderNo}`
  });
},
// 退款跳转（修改原showRefundModal方法）
showRefundModal(e) {
  const orderNo = e.currentTarget.dataset.id;
  // 跳转时携带fromType=refund，标记是退款操作
  wx.navigateTo({
    url: `/pages/service/cancelReason/cancelReason?orderNo=${orderNo}&fromType=refund`
  });
},

  // showRefundModal(e) {
  //   const orderNo = e.currentTarget.dataset.id; // 获取订单编号
  //   // 弹出确认对话框
  //   wx.showModal({
  //     title: '提示',
  //     content: '确定要退款吗？',
  //     success: (res) => {
  //       if (res.confirm) {
  //         // 用户点击确定
  //         request({
  //           url: `/orderManagement/orderManagement/refundByOrderNo`,
  //           method: 'PUT',
  //           data: {
  //             orderNo: orderNo,
  //             orderStatus: 5,
  //           },
  //         }).then(resp => {
  //           console.log('退款接口返回：', resp); 
  //           if (resp.data.code == 200) {
  //             wx.showToast({
  //               title: '退款成功',
  //               icon: 'success',
  //               duration: 2000
  //             });
  //             console.log("QQQQQQQQQQ",this.data),
  //             // 刷新订单列表
  //             this.getOrderList();
  //           } else {
  //             wx.showToast({
  //               title: '退款失败',
  //               icon: 'none',
  //               duration: 2000
  //             });
  //           }
  //         }).catch(err => {
  //           console.error('退款失败：', err);
  //           wx.showToast({
  //             title: '退款失败，请重试',
  //             icon: 'none',
  //             duration: 2000
  //           });
  //         });
  //       }
  //     }
  //   });
  // },

  toMy() {
    wx.navigateBack();
  },

  todetails(e) {
    const status = e.currentTarget.dataset.status;
    const orderId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/service/orderDetails/orderDetails?status=${status}&id=${orderId}`
    });
  },

  // Tab切换仅更新active状态，无需重新筛选（数据已提前准备好）
  onChange(e) {
    this.setData({
      active: e.detail
    });
  },

  /**
   * 页面加载时：一次性筛选所有Tab的数据
   * 每个Tab的数据源独立，切换时直接使用，避免动态筛选问题
   */
  onLoad(options) {
    const userInfo = wx.getStorageSync('loginUserInfo');
    const initTabIndex = options.activeID ? parseInt(options.activeID) : 0;
    const { allOrders } = this.data;
    this.setData({
      orderUserId:userInfo.userId
    })

    // 一次性筛选所有Tab的数据
    this.setData({
      active: initTabIndex,
      allTabOrders: allOrders, // 全部：直接用原始数据
      daizhifuTabOrders: allOrders.filter(o => o.status === 'daizhifu'), // 待支付
      daifuwuTabOrders: allOrders.filter(o => o.status === 'daifuwu'),   // 待执行
      yizhixingTabOrders: allOrders.filter(o => o.status === 'yizhixing'),// 已执行
      yiwanchengTabOrders: allOrders.filter(o => o.status === 'yiwancheng')// 已完成
    });

    //获取我的订单列表
    this.getOrderList()
  },


  // 查询当前用户所有订单
getOrderList() {
  const orderUserId = this.data.orderUserId;
  request({
    url: '/orderManagement/orderManagement/listApp',
    method: 'GET',
    data: { orderUserId }
  }).then(resp => {
    console.log('我的订单列表，后端返回：', resp.data);
    if (resp.data.code === 200) {
      // 1. 转换后端数据为前端格式
      const formattedOrders = formatBackendOrders(resp.data.rows);
      // 2. 更新原始订单数据
      this.setData({ allOrders: formattedOrders }, () => {
        // 3. 数据更新后，重新筛选各Tab的数据
        this.setData({
          allTabOrders: this.data.allOrders, // 全部订单
          daizhifuTabOrders: this.data.allOrders.filter(o => o.status === 'daizhifu'), // 待支付
          daifuwuTabOrders: this.data.allOrders.filter(o => o.status === 'daifuwu'), // 待执行
          yizhixingTabOrders: this.data.allOrders.filter(o => o.status === 'yizhixing'), // 已执行
          yiwanchengTabOrders: this.data.allOrders.filter(o => o.status === 'yiwancheng') // 已完成
        });
      });
    }
  }).catch(err => {
    console.error('获取我的订单列表信息失败：', err);
    wx.showToast({ title: '获取订单失败，请重试', icon: 'none' });
  });
},

  /**
   * 删除订单（逻辑删除）
   * @param {Object} e - 事件对象
   */
  handleDelete(e) {
    const orderNo = e.currentTarget.dataset.id; // 获取订单编号
    
    // 弹出确认对话框
    wx.showModal({
      title: '提示',
      content: '确定要删除该订单吗？',
      success: (res) => {
        if (res.confirm) {
          // 用户点击确定
          request({
            url: `/orderManagement/orderManagement`,
            method: 'PUT',
            data: {
              orderNo: orderNo,
              isDeleted: 1 // 设置为已删除
            }
          }).then(resp => {
            console.log('删除订单结果：', resp.data);
            if (resp.data.code === 200) {
              wx.showToast({
                title: '删除成功',
                icon: 'success',
                duration: 2000
              });
              // 刷新订单列表
              this.getOrderList();
            } else {
              wx.showToast({
                title: '删除失败',
                icon: 'none',
                duration: 2000
              });
            }
          }).catch(err => {
            console.error('删除订单失败：', err);
            wx.showToast({
              title: '删除失败，请重试',
              icon: 'none',
              duration: 2000
            });
          });
        }
      }
    });
  },

  // 其他生命周期函数不变
  onReady() {},
  onShow() {
    // 页面显示时刷新订单列表
    this.getOrderList();
  },
  onHide() {},
  onUnload() {},
  onPullDownRefresh() {},
  onReachBottom() {},
  onShareAppMessage() {}
})